package cn.fl.project.service.impl;

import cn.fl.project.api.IPrjOrgBpLimitCfgApiService;
import cn.fl.project.condition.SysOrgBpCfgCondition;
import cn.fl.project.dto.SysOrgBpCfgDTO;
import cn.fl.project.dto.SysOrgBpCfgEditLogDTO;
import cn.fl.project.service.PrjOrgBpLimitService;
import cn.fl.project.transform.SysOrgBpCfgEditLogVOTransform;
import cn.fl.project.transform.SysOrgBpCfgVOTransform;
import cn.fl.project.vo.SysOrgBpCfgEditLogVO;
import cn.fl.project.vo.SysOrgBpCfgVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class PrjOrgBpLimitServiceImpl implements PrjOrgBpLimitService {

    @Autowired
    IPrjOrgBpLimitCfgApiService prjOrgBpLimitCfgApiService;

    @Override
    public SysOrgBpCfgVO getBpOrgLimit(SysOrgBpCfgCondition condition) {
        SysOrgBpCfgDTO cfgDTO = prjOrgBpLimitCfgApiService.getBpOrgLimit(condition);
        if (cfgDTO != null){
            SysOrgBpCfgVO sysOrgBpCfgVO = SysOrgBpCfgVOTransform.toVO(cfgDTO);
            return sysOrgBpCfgVO;
        }else{
            return null;
        }
    }

    @Override
    public SysOrgBpCfgVO getOrgBpLimitCount(SysOrgBpCfgCondition condition) {
        SysOrgBpCfgDTO countDto = prjOrgBpLimitCfgApiService.getOrgBpLimitCount(condition);
        if (countDto != null){
            SysOrgBpCfgVO sysOrgBpCfgVO = SysOrgBpCfgVOTransform.toVO(countDto);
            return sysOrgBpCfgVO;
        }else {
            return null ;
        }
    }

    @Override
    public Integer updateOrgBpLimitCfg(SysOrgBpCfgVO sysOrgBpCfgVO) {
        SysOrgBpCfgDTO bpCfgDTO = SysOrgBpCfgVOTransform.toDTO(sysOrgBpCfgVO);
        Integer integer = prjOrgBpLimitCfgApiService.updateOrgBpLimitCfg(bpCfgDTO);
        return integer;
    }

    @Override
    public List<SysOrgBpCfgEditLogVO> getSysOrgCfgEditLog(SysOrgBpCfgCondition condition) {
        List<SysOrgBpCfgEditLogDTO> logDTOs = prjOrgBpLimitCfgApiService.getSysOrgCfgEditLog(condition);
        List<SysOrgBpCfgEditLogVO> orgBpCfgEditLogVOS = new ArrayList<>();
        if (logDTOs != null){
            orgBpCfgEditLogVOS = SysOrgBpCfgEditLogVOTransform.toVOList(logDTOs) ;
        }
        return orgBpCfgEditLogVOS;
    }

    @Override
    public Integer addSysOrgCfgEditLog(SysOrgBpCfgEditLogVO sysOrgBpCfgEditLogVO) {
        SysOrgBpCfgEditLogDTO dto = SysOrgBpCfgEditLogVOTransform.toDTO(sysOrgBpCfgEditLogVO);
        return prjOrgBpLimitCfgApiService.addSysOrgCfgEditLog(dto);
    }

    @Override
    public List<SysOrgBpCfgVO> getBpOrgLimitCfgList(String orgCd) {
        List<SysOrgBpCfgVO> sysOrgBpCfgVOS = new ArrayList<>() ;
        List<SysOrgBpCfgDTO> sysOrgBpCfgDTOS = prjOrgBpLimitCfgApiService.getBpOrgLimitCfgList(orgCd);
        if (sysOrgBpCfgDTOS != null){
            sysOrgBpCfgVOS = SysOrgBpCfgVOTransform.toVOList(sysOrgBpCfgDTOS);
        }
        return sysOrgBpCfgVOS;
    }

    @Override
    public SysOrgBpCfgVO getSubBpCfg(SysOrgBpCfgCondition condition) {
        SysOrgBpCfgVO sysOrgBpCfgVO = null;
        SysOrgBpCfgDTO sysOrgBpCfgDTO = prjOrgBpLimitCfgApiService.getSubBpCfg(condition);
        if (sysOrgBpCfgDTO != null){
            sysOrgBpCfgVO = SysOrgBpCfgVOTransform.toVO(sysOrgBpCfgDTO);
        }
        return sysOrgBpCfgVO;
    }
}
